package com.abc.easyclaim;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.zip.ZipException;

import jxl.read.biff.BiffException;

import android.app.Activity;
import android.app.AlertDialog;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Environment;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class ImportZip extends Activity{

	private String cazeName;
	private ListView lv;              //文件列表
	private Button upButton;          //往上返回路径按钮
	private Button openButton;         //打开文件夹按钮
	private Button returnButton;       //返回按钮
	private String currentPath;//记录当前文件列表的父路径
    private String rootPath="/";//根目录 
    private String leavePath;//叶子文件
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
		setContentView(R.layout.importfile);
		//标题栏的布局
	    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.importfile_titlebar); 
	    //获取组件
	    lv=(ListView)findViewById(R.id.lvwjlb);
	    upButton=(Button)findViewById(R.id.bsf);
	    openButton=(Button)findViewById(R.id.bgml);
	    returnButton=(Button)findViewById(R.id.return_import);
	    //添加监听器
	    upButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if((currentPath!=null)&&(!currentPath.equals(rootPath)))
				{
					//如果当前父路径不是rootPath，则点击上翻键，回到上一层目录
					File cf=new File(currentPath);//获取当前文件列表的路径对应的文件
					cf=cf.getParentFile();//获取父目录文件
					currentPath=cf.getPath();//记录当前文件列表路径
					
					intoListView(getFiles(currentPath),lv);
				}
			}
		});
	    openButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				currentPath=rootPath;
				final File[] files=getFiles(currentPath);//获取根节点文件列表 
				intoListView(files,lv);//将各个文件添加到ListView列表中
			}
		});
	    returnButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				finish();
			}
		});
	}
       
	//获取当前目录下的文件列表
    public File[] getFiles(String filePath)
    {
    	File[] files=new File(filePath).listFiles();//获取当前目录下的文件    	
    	return files;
    }
    
    //将文件列表添加到ListView中
    public void intoListView(final File[] files,final ListView lv)
    {
    	if(files!=null)//当文件列表不为空时
    	{
    		if(files.length==0)
    		{//当前目录为空				
    			File cf=new File(currentPath);//获取当前文件列表的路径对应的文件
				cf=cf.getParentFile();//获取父目录文件
				currentPath=cf.getPath();//记录当前文件列表路径

				Toast.makeText(ImportZip.this, "该文件夹为空！！", Toast.LENGTH_SHORT).show();  
    		}
    		else
    		{
        		BaseAdapter ba=new BaseAdapter()//创建适配器
            	{
        			@Override
        			public int getCount() {
        				return files.length;
        			}

        			@Override
        			public Object getItem(int position) {
        				return null;
        			}

        			@Override
        			public long getItemId(int position) {				
        				return 0;
        			}

        			@Override
        			public View getView(int arg0, View arg1, ViewGroup arg2) {
        				LinearLayout ll=new LinearLayout(ImportZip.this);
        				ll.setOrientation(LinearLayout.VERTICAL);//竖直排列
        				ll.setPadding(5, 5, 5, 5);//留白				
        				TextView tv=new TextView(ImportZip.this);//初始化TextView
        				tv.setTextColor(Color.BLACK);//设置字体颜色
        				tv.setText(files[arg0].getName());//添加文件名称
        			    tv.setGravity(Gravity.LEFT);//左对齐
        			    tv.setTextSize(18);//字体大小  			
        			    ll.addView(tv);//LinearLayout添加TextView
        				return ll;
        			}
            		
            	};
            	lv.setAdapter(ba);//设置适配器
            	
            	lv.setOnItemClickListener//设置选中菜单的监听器
            	(
          			new OnItemClickListener()
          			{
        					@Override
        					public void onItemClick(AdapterView<?> arg0, View arg1,
        							int arg2, long arg3) {
        						File f=new File(files[arg2].getPath());//获得当前点击的文件对象
        						if(f.isDirectory())//存在分支
        						{
        							currentPath=files[arg2].getPath();
        							File[] fs=getFiles(currentPath);//获取当前路径下所有子文件
        							intoListView(fs,lv);//将子文件列表填入ListView中
        						}
        						else 
        						{
        							//需要导入的压缩文件的路径
        							leavePath=f.getPath();
        							File upzipFile=new File(leavePath);
        							if (upzipFile.getName().split("\\.")[1].equals("zip")) {
        								String targetPath=Environment.getExternalStorageDirectory().getAbsolutePath()+"/easyclaim/";    
        								cazeName=upzipFile.getName().split("\\.")[0];
            							try {
            								ZipUtil.upZipFile(upzipFile, targetPath, cazeName);
            							} catch (ZipException e1) {
            								// TODO Auto-generated catch block
            								e1.printStackTrace();
            							} catch (IOException e1) {
            								// TODO Auto-generated catch block
            								e1.printStackTrace();
            							}	
            							String xlsPath=Environment.getExternalStorageDirectory().getAbsolutePath()+"/easyclaim/"+"/import";
            							File xlsFile=new File(xlsPath);
            							if (!xlsFile.exists()) {
            								xlsFile.mkdirs();
            							}
            							File[] xlsFiles=xlsFile.listFiles();
            							ArrayList<File> otherxlsFiles=new ArrayList<File>();  //放除去caze.xls的xls文件
            							for (int i = 0,j=0; i < xlsFiles.length; i++) {
											if (xlsFiles[i].getName().split("\\.")[0].equals("caze")) {
												try {
													DatabaseDump.readExcel(xlsFiles[i]);  //先将caze.xls文件导入数据库
													xlsFiles[i].delete();
												} catch (BiffException e) {
													// TODO Auto-generated catch block
													e.printStackTrace();
												} catch (IOException e) {
													// TODO Auto-generated catch block
													e.printStackTrace();
												}     	
											}
											else {
												otherxlsFiles.add(j, xlsFiles[i]);
												j++;
											}
										}
            							for (int i = 0; i < otherxlsFiles.size(); i++) {
											try {
												DatabaseDump.readExcel(otherxlsFiles.get(i));     //将其它xls文件导入数据库
												otherxlsFiles.get(i).delete();
											} catch (BiffException e) {
												// TODO Auto-generated catch block
												e.printStackTrace();
											} catch (IOException e) {
												// TODO Auto-generated catch block
												e.printStackTrace();
											}
										}
            							new AlertDialog.Builder(ImportZip.this)   
            					        .setTitle("提示")   
            					        .setMessage("导入成功")   
            					        .setPositiveButton("确定", null)   
            					        .show();
									}
        							else {
										Toast.makeText(ImportZip.this, "选中的不是zip压缩文件，不能导入！", Toast.LENGTH_SHORT).show();
									}
        						}        						
        					}
          			}
            	);
    		}    
    	}
    	else
    	{
    		File cf=new File(currentPath);//获取当前文件列表的路径对应的文件
			cf=cf.getParentFile();//获取父目录文件
			currentPath=cf.getPath();//记录当前文件列表路径
			Toast.makeText(ImportZip.this, "该文件夹为空！！", Toast.LENGTH_SHORT).show();
    	}
    }
}

